名称介绍

概 述

这是一款专为树莓派设计的两自由度云台扩展板,基于树莓派40PIN GPIO接口设计,直接插入树莓派GPIO口即可使用,同时也将树莓派GPIO口插针引出,不影响树莓派GPIO口的使用。模块采用I2C接口控制,仅需2根信号线即可实现云台转动和光强检测,板载PCA9685芯片,可输出12位分辨率的PWM控制云台转动;板载TSL25911FN,内置ADC,能够得到近似人眼对光的反应,辅助模块工作;板载电平转换电路,兼容3.3V/5V的工作电平;配套专用亚克力板用以固定树莓派摄像头,将摄像头搭配在云台上,拍摄时更方便。

经过实际测试,模块适用于树莓派全系列型号,在英伟达Jetson Nano开发板上也能正常使用。模块可以在水平和垂直方向做二自由度运动,方便安装摄像头,可以实现图像监控、图像识别定位追踪;加装红外传感器或超声波测距传感器可以组合成一体化探测装置,使机器人能感测周围障碍物,从而实现机器人避障功能。当然也可以安装各种传感器,通过树莓派和Jetson Nano完成各种新颖的互动作品。

注意:

1、模块为散件,需自己完成组装,详见安装步骤

2、本产品不包含树莓派和摄像头。

技术参数

  • 工作电压:3.3V/5V
  • 控制芯片:PCA9685
  • PWM分辨率:12位
  • 环境光传感器:TSL25911FN
  • 环境光分辨率:12位
  • 逻辑电压:3.3V
  • 通信接口:I2C
  • 产品尺寸:56.6mm*65mm

控制器

本产品控制器为PCA9685,是一款基于IIC总线通信的12位精度16通道PWM波输出的芯片。并且板载TSL2581环境光传感器,通过检测光强辅助摄像头工作,同样通过 I2C 接口控制,不会占用太多接口引脚资源。

通信协议

从上的得知使用的是I2C通信,I2C 通信,一条数据线,一条时钟线。 I2C 总线在传送数据过程中共有三种类型信号:开始信号、结束信号和应答信号。

开始信号:SCL 为高电平时, SDA 由高电平向低电平跳变,开始传送数据。
结束信号:SCL 为高电平时, SDA 由低电平向高电平跳变,结束传送数据。
应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据。

  • I2C写数据时序

首先主机(即树莓派,后面统称为主机)会发送一个开始信号,然后将其 I2C 的 7 位地址与写操作位组合成 8 位的数据发送给从机(即 TSL2581 传感器模块,后面统称为从机),从机接收到后会响应一个应答信号,主机此时将命令寄存器地址发送给从机,从机接收到发送响应信号,此时主机发送命令寄存的值,从机回应一个响应信号,直到主机发送一个停止信号,此次 I2C 写数据操作结束

  • I2C读数据时序

首先主机会发送一个开始信号,然后将其 I2C 的 7 位地址与写操作位组合成 8 位的数据发送给从机,从机接收到后会响应一个应答信号,主机此时将命令寄存器地址发送给从机,从机接收到发送响应信号,此时主机重新发送一个开始信号,并且将其 7 位地址和读操作位组合成 8 位的数据发送给从机,从机接收到信号后发送响应信号,再将其寄存器中的值发送给主机,主机端给予响应信号,直到主机端发送停止信号,此次通信结束

I2C地址

  • PCA9685

从上面的通信可知,PCA9685和TSL2581两个都是使用I2C通信,那么需要设置不同的I2C地址,地址不一样,就不会影响通信

"

  • TSL2581

注:我们模块默认PCA9685的I2C地址引脚A5=A4=A3=A2=A1=A0=0,PCA9685的I2C地址为0x40,TSL2581 的I2C 地址引脚浮空(Float),TSL2581 的I2C 地址为0x39。如果用户不使用树莓派驱动时候,例如使用STM32的时候需要在低位补上R/W位

树莓派使用

先不要组装舵机,由于舵机初始角度不是在起始位置,如果直接组转上去舵机旋转时可能会卡死。建议先单独测试舵机转的角度,防止舵机意外损坏。请按照如下教程依次执行

硬件配置

打开I2C接口

在终端执行:

1.  sudo raspi-config 
2.  选择 Interfacing Options -> I2C ->yes 启动 i2C 内核驱动

然后重启树莓派:

 1. sudo reboot

安装库

  • 安装BCM2835, 打开树莓派终端,并运行以下指令
1. wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.68.tar.gz
2. tar zxvf bcm2835-1.68.tar.gz 
3. cd bcm2835-1.68/
4. sudo ./configure && sudo make && sudo make check && sudo make install
5. # 更多的可以参考官网:http://www.airspayce.com/mikem/bcm2835/
  • 安装wiringPi
1. sudo apt-get install wiringpi
2. #对于树莓派2019年5月之后的系统(早于之前的可不用执行),可能需要进行升级:
3. wget https://project-downloads.drogon.net/wiringpi-latest.deb
4. sudo dpkg -i wiringpi-latest.deb
5. gpio -v
6. # 运行gpio -v会出现2.52版本,如果没有出现说明安装出错

下载程序

1. sudo apt-get install p7zip-full
2. wget http://www.waveshare.net/w/upload/9/96/Pan-Tilt_HAT_code.7z
3. 7z x Pan-Tilt_HAT_code.7z -r -o./Pan-Tilt_HAT_code
4. sudo chmod 777 -R  Pan-Tilt_HAT_code.7z
5. cd Pan-Tilt_HAT_code/RaspberryPi/

调试

连接:

注意连线:

棕色线 GND
红色线 5V
橙色线 S1/S0

运行测试代码前一定注意倾斜舵机安装位置,安装位置不好可能会导致舵机发热烧毁,先不组装舵机,保证舵机可以旋转360不会有障碍,连接硬件,平移舵机连接S1,倾斜舵机连接S0。然后打开程序文件夹中test文件夹

1. cd test
2. make clean
3. make
4. sudo ./main

运行后面,舵机全部旋转到0度(舵机旋转角度为0到180,也就是旋转到初始位置),然后切断电源组装,注意不要旋转倾斜舵机

组装

组装图如下:



完成效果图

A: 平移舵机

B: 倾斜舵机

摄像头如何组装:

模块配件提供了一包M2的独立螺丝包,一共5颗螺丝10个螺帽,摄像头全部是先给摄像头上好M2螺丝,抬高摄像头然后再连接亚克力板,将亚克力板使用螺丝锁好

演示例程

基础演示

1. #在Pan-Tilt-HAT/RaspberryPi/目录下面执行如下:
2. #如果使用环境光,就执行这个
3. cd Light_Sensor/
4. #如果使用云台,就执行这个
5. cd Servo_Driver/
  • BCM2835例程
1. cd bcm2835
2. make clean
3. make
4. sudo ./main
  • wiringpi例程
1. cd wiringpi
2. make clean
3. make
4. sudo ./main
  • python例程
1. cd python
2. sudo python main.py

MJPG-STREAMER 软件实时监控

"MJPG-streamer",是用于从摄像头采集图像,把他们以流的形式通过基于 ip 的网络传输到浏览器。

  • 使用摄像头前必须运行 raspi-config 命令启用摄像头:
1. sudo raspi-config
2. 选择 Enable Camera,选择 YES

  • 如果是使用 CSI 接口的摄像头,那么系统找不到/dev/video0 的设备节点。需要在/etc/modules 文件中添加一行 bcm2835-v4l2:
1. sudo nano /etc/modules

加上:

1. bcm2835-v4l2

那么系统启动之后,系统会加载这个文件中的模块名,重启系统:

1. sudo reboot
2. ls /dev/video*

下面发现 video0 设备节点。

说明:如果执行前几步之后,请确认操作和指令正确的情况

  • 运行如下命令:
1. sudo apt-get update
2. sudo apt-get install libjpeg8-dev cmake
3. cd Pan-Tilt-HAT/RaspberryPi/web_Python
4. git clone https://github.com/jacksonliam/mjpg-streamer
5. cd mjpg-streamer/mjpg-streamer-experimental/
6. sudo make clean all
7. sudo ./start.sh

在谷歌浏览器(其他浏览器可能会无法显示)地址栏内输入树莓派 ip 地址,端口号 8080,点击 Stream 会实时显示摄像头拍摄的内容。
如果你需要了解更多可以查看:https://github.com/jacksonliam/mjpg-streamer

通过 BOTTLE 实现远程遥控

Bottle 是一个简单高效的遵循 WSGI 的微型 python Web 框架.通过 Bottle 可以快速实现 web控制,只支持python2。

安装库:

1. sudo apt-get install python-bottle
2. cd Pan-Tilt-HAT/RaspberryPi/web_Python/
3. sudo python main.py

在谷歌浏览器(其他浏览器可能会异常)地址栏内输入树莓派 ip 地址,端口号 8001,会显示如下页面,点击按键可以遥控

支持手机和电脑控制,无需APP

手机控制:

电脑控制:

Jetson nano

安装库

安装函数库

  • 打开终端界面,输入以下指令安装相应的函数库
1. sudo apt-get update
2. sudo apt-get install python3-pip
3. sudo pip3 install Jetson.GPIO
4. sudo groupadd -f -r gpio
5. sudo usermod -a -G gpio your_user_name
6. sudo cp /opt/nvidia/jetson-gpio/etc/99-gpio.rules /etc/udev/rules.d/
7. sudo udevadm control --reload-rules && sudo udevadm trigger

【注意】your_user_name 是你使用的用户名,比如说 Tom

  • 安装I2C
1. sudo apt-get install python-smbus
  • 安装图像处理库:
1. sudo apt-get install python3-pil
2. sudo apt-get install python3-numpy

下载程序

1. sudo apt-get install p7zip
2. wget http://www.waveshare.net/w/upload/9/96/Pan-Tilt_HAT_code.7z
3. 7zr x Pan-Tilt_HAT_code.7z -r -o./Pan-Tilt_HAT_code
4. sudo chmod 777 -R  Pan-Tilt_HAT_code
5. cd Pan-Tilt\ HAT_Code/Pan-Tilt\ HAT/

当然也可以下在我们Github上面的工程:

1. sudo git clone https://github.com/waveshare/Pan-Tilt-HAT
2. cd Pan-Tilt-HAT/JetsonNano/

基础演示

1. #如果使用环境光,就执行这个
2. cd 1_Light_Sensor/
3. #如果使用云台,就执行这个
4. cd 2_Servo_Driver/
  • python例程
1. #python2
2. cd python2
3. sudo python main.py
4. #python3
5. cd python3
6. sudo python3 main.py

测试摄像头

1. DISPLAY=:0.0 gst-launch-1.0 nvarguscamerasrc ! \'video/x-raw(memory:NVMM), width=1920, height=1080, format=(string)NV12, framerate=(fraction)30/1\' ! nvoverlaysink -e

正常摄像头拍到的数据会显示在屏幕上。按Ctrl + c结束

控制云台

在终端运行:

1. cd 3_Pan-Tilt+CAM
2. sudo python main.py

摄像头工作了,并显示在了屏幕上,转动摄像头,屏幕实时显示摄像头数据

常见问题

还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。

更多

DFshopping_car1.png DFRobot商城购买链接